package com.xuelang.pipeline.domain.resource.service;

import com.xuelang.pipeline.client.common.result.PageRecord;
import com.xuelang.pipeline.client.resource.dto.SpaceQuery;
import com.xuelang.pipeline.domain.resource.Space;

import java.util.List;

/**
 * 空间领域服务类
 *
 * @author xiwen.zxg
 * @since 2024/5/15
 */
public interface SpaceDomainService {
    /**
     * 获取空间列表，有过滤条件
     *
     * @param currentPage
     * @param pageSize
     * @param spaceQuery
     * @return
     */
    PageRecord<Space> pageList(long currentPage, long pageSize, SpaceQuery spaceQuery);
    /**
     * 获取空间列表，有过滤条件
     *
     * @param spaceQuery
     * @return
     */
    List<Space> list(SpaceQuery spaceQuery);

    /**
     * 新增空间
     *
     * @param space
     * @return
     */
    Boolean save(Space space);

    /**
     * 更新空间
     *
     * @param space
     * @return
     */
    Boolean update(Space space);
    /**
     * 删除空间
     *
     * @param uuid
     * @return
     */
    Boolean delete(String uuid);

    /**
     * 判断空间编码是否存在
     *
     * @param targetClusterUuid
     * @param spaceCode
     * @return
     */
    Boolean existsCode(String targetClusterUuid, String spaceCode);

    /**
     * 判断空间名称是否存在
     *
     * @param targetClusterUuid
     * @param spaceCode
     * @param spaceName
     * @return
     */
    Boolean existsName(String targetClusterUuid, String spaceCode, String spaceName);
    /**
     * 查询默认空间
     *
     * @return
     */
    Space queryDefaultSpace();
    /**
     * 查询空间
     *
     * @param uuid
     * @return
     */
    Space query(String uuid);
    /**
     * 判断是否有关联clusterUuid的交付空间
     *
     * @param clusterUuid
     * @return
     */
    Boolean existsSpaceByClusterUuid(String clusterUuid);
}
